package com.tcs.teg.service.accounts;

import java.util.List;
import java.util.Map;

import org.hibernate.stat.Statistics;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.tcs.teg.dao.accounts.IAccountDao;
import com.tcs.teg.domain.accounts.Account;
import com.tcs.teg.domain.accounts.AccountCriteria;
import com.tcs.teg.domain.accounts.AccountRegistrationForm;

import common.money.Percentage;


@Service
public interface IAccountService {

	public List<Account> getAllAccounts();
	
	public List<String>  getAccountNames(String searchStr);
	
	public List<String>  getContactNumbers(String searchStr);

	public Account getAccount(Integer entityId) throws ObjectRetrievalFailureException;

	public void update(Account account) ;

	public void updateBeneficiaryAllocationPercentages(Integer accountId, Map<String, Percentage> allocationPercentages) ;

	public void addBeneficiary(Integer accountId, String beneficiaryName) ;

	public void removeBeneficiary(Integer accountId, String beneficiaryName, Map<String, Percentage> allocationPercentages) ;

	public List<Account> search(AccountCriteria criteria) ;
	
    public void saveRegistrationDetails(AccountRegistrationForm arf);
	
	public Statistics getStatistics();
}
